from datetime import datetime, timedelta
from app import app
import jwt

# 生成JWT令牌
def generate_token(id, username,identity):
    # 设置令牌的过期时间
    expiration = datetime.now() + timedelta(hours=1)
    payload = {
        'id': id,# 用户ID
        'username': username,# 用户名
        'identity':identity,# 用户身份
        'exp': expiration  # 添加过期时间到 payload
    }
    # 使用SECRET_KEY对payload进行签名，生成JWT令牌
    token = jwt.encode(payload, app.config['SECRET_KEY'], algorithm='HS256')
    return token


# 验证JWT令牌
def verify_token(token):
    try:
        # 尝试使用SECRET_KEY对令牌进行解码
        payload = jwt.decode(token, app.config['SECRET_KEY'], algorithms=['HS256'])
        return payload
    except jwt.ExpiredSignatureError:
        # 处理令牌过期的情况
        return 0
    except jwt.InvalidTokenError:
        # 处理无效令牌的情况
        return 1